using ClownFish;
using System;
using System.Data;
using System.Data.Common;
using System.Reflection;

[DefaultMember("Item")]
internal sealed class Class9
{
	private interface Interface0
	{
		object imethod_0(string string_0);

		object imethod_1(int int_0);

		void imethod_2(object object_0);

		string[] imethod_3();
	}

	private sealed class Class10 : Class9.Interface0
	{
		private DataRow dataRow_0;

		public Class10(DataRow dataRow_1)
		{
			if (dataRow_1 == null)
			{
				throw new ArgumentNullException("row");
			}
			this.dataRow_0 = dataRow_1;
		}

		public object imethod_0(string string_0)
		{
			return this.dataRow_0[string_0];
		}

		public object imethod_1(int int_0)
		{
			return this.dataRow_0[int_0];
		}

		public void imethod_2(object object_0)
		{
			if (object_0 == null)
			{
				throw new ArgumentNullException("row");
			}
			DataRow dataRow = (DataRow)object_0;
			if (dataRow.Table != this.dataRow_0.Table)
			{
				throw new ArithmeticException("新的数据行与构造函数传入的数据行不属于同一个表。");
			}
			this.dataRow_0 = dataRow;
		}

		public string[] imethod_3()
		{
			return this.dataRow_0.Table.GetColumnNames();
		}
	}

	private sealed class Class11 : Class9.Interface0
	{
		private DbDataReader dbDataReader_0;

		public Class11(DbDataReader dbDataReader_1)
		{
			if (dbDataReader_1 == null)
			{
				throw new ArgumentNullException("reader");
			}
			this.dbDataReader_0 = dbDataReader_1;
		}

		public object imethod_0(string string_0)
		{
			return this.dbDataReader_0[string_0];
		}

		public object imethod_1(int int_0)
		{
			return this.dbDataReader_0[int_0];
		}

		public void imethod_2(object object_0)
		{
		}

		public string[] imethod_3()
		{
			return this.dbDataReader_0.GetColumnNames();
		}
	}

	private Class9.Interface0 interface0_0;

	public object object_0;

	public Class9(DataRow dataRow_0)
	{
		this.interface0_0 = new Class9.Class10(dataRow_0);
	}

	public Class9(DbDataReader dbDataReader_0)
	{
		this.interface0_0 = new Class9.Class11(dbDataReader_0);
	}

	public object method_0(string string_0)
	{
		return this.interface0_0.imethod_0(string_0);
	}

	public object method_1(int int_0)
	{
		return this.interface0_0.imethod_1(int_0);
	}

	public void method_2(object object_1)
	{
		this.interface0_0.imethod_2(object_1);
	}

	public string[] method_3()
	{
		return this.interface0_0.imethod_3();
	}
}
